[From Hal Brewer's site at http://home.att.net/~halbower/ which was last updated 5 June 2004] Z-System Libraries *************************************************************** Many (if not most) programs written for the ZCPR3.x-based systems, ZSDOS, the B/P Bios, and more used pre-assembled libraries of routines originated by Richard Conn. The basic SYSLIB was augmented with Z3LIB for the ZCPR3 Command Processor Replacement, and VLIB which added generic terminal support to applications. I picked up maintenance for these libraries and their associated Help files in the late 1980s. From that time until the last updates, all routines were optimized for Z80s, and a fourth library, DSLIB, was added to support generic file date stamping. The last updates were made in December 1993 and are available here: LBRHL45A.LBR - Help files for "The Libraries" Vers 4.5A. LIBS45A.LBR - SYSLIB, Z3LIB, VLIB, DSLIB Vers 4.5A in MS REL and SLR REL formats. **************************************************************** When the Z-System Libraries were being actively developed, I wrote a small demonstration program to use the primative character-based windowing features in Version 4 of VLIB as a shell instead of command line interaction. At that time, two versions were produced; one using the multiple command line of ZCPR3, the other using the shell stack. Both versions were combined in 1997 with an assembly option dictating which mechanism is used. This library contains the source, executable and documentation. It is hereby released into the public domain... PDMSHELL.LBR - Pull-Down Menu Shell demo program for Z-Systems ================================================================================ THE NEW ZCPR3 | ============== The following message was posted to (where? a Usenet group?) in September 1986. It was found (Sept. 2004) at the following Internet site: nelsonit.com/~jon/info-cpm/1986/09/06/133933.html As Mr. Conn's biography (available at the following Internet sites) says he worked on ZCPR3 from 1984-86, was this "new ZCPR3" ever completed? Conn's biography: www.iste.uni-stuttgart.de/ps/AdaBasis/pal_1195/ada/userdocs/html/Conn_Bio.html bluehawk.monmouth.edu/faculty/dimasi/DiMasi_Bio.html www.monmouth.com/~conn/Conn_Bio.html unicoi.kennesaw.edu/ase/support/conn_bio.htm -------------------------------------- Date : Sat, 06 Sep 1986 13:39:33-MDT From : Rick Conn Subject: Some data on ZCPR 3.3 The New Z System by Richard Conn, 6 Sep 1986 I have been working quietly on the development of the new Z System for quite some time, and I feel that I must speak out now on what I am doing so that people will know the true story. This presentation is short and not complete, but it is enough to answer some basic questions without taking too much of my time away from the development activities. Why create a new Z System? First of all, why am I creating a new Z System? There are many reasons: 1) I have studied the old Z System for over two years now, reviewing it for flaws and weaknesses. From the beginning, I have stated that the Z System is evolutionary, and I have enough new ideas now to implement the next step in this evolution. 2) I have been learning many new things about other environments, including Ada Programming Support Environments (APSEs), UNIX, SUN window-based systems, TOPS-20, VAX/VMS, and Symbolics workstations. I have seen many good ideas that I would like to incorporate into my personal computer environment, the Z System. 3) My next real goal is the development of a banked Z System followed by a multitasking Z System. An improvement in the current non-banked Z System is a logical step along the way, giving me a platform from which to experiment with some of the new ideas before fully incorporating them into the new systems. ZCPR 3.3 is not a goal, but is a milestone along the road to a goal. 4) My needs have changed and are continuing to change, and the old Z System no longer meets my needs. I have to change the system in order to continue advancing toward my other goals. At a recent talk I gave at the Trenton Computer Festival, someone asked me if I plan to move over to the IBM community. If I was motivated by profit to a large extent, my answer would obviously have been yes. But my principal motivation is to learn and grow and to have fun doing it. The money is a very nice side effect, but it is not the driving side effect. I definitely intend to keep learning through the Z System. The Z System, coupled with the very rich computer environment I am accessing through my communications system, has enough potential to meet my needs for many years to come. New Standards Good software engineering principles and common sense indicate that a lot of benefit can be derived through standards. The evolving ZCPR 3.3 and Z System now have a number of standards going for them: 1) a common language, implemented by the ZAS assembler 2) a common support library, implemented by SYSLIB, Z3LIB, and VLIB 3) a common format for all assembly language programs, implemented by PPAL - the Pretty Printer for Assembly Language 4) a common operating system and support base, implemented by ZCPR3 and ZRDOS 5) a common documentation format which allows easier upgrading of the documentation as the programs change; this system is for both hardcopy (MAN) and online (HELP) mediums 6) a common configuration management system, CONFIG, which allows users to easily identify their configuration and determine if all of their programs are current 7) page-relocatable structures for system segments, ZCPR 3.3 itself, and ZRDOS, which server to further support transportability and make installation easier 8) a very robust communications protocol, supporting packet sizes from 1 data byte to 4K data bytes You will see all of these in the months to come. The Libraries One key point to make here is that I purposely did not mention a common binary structure, like the Environment Descriptor. The Environment Descriptor is not a standard, but the interface to it, namely Z3LIB and VLIB, is. This was purposely done so that future growth would be supported. As the Z System evolves, it will probably be necessary to delete old features which are no longer needed in favor of new features which provide new capabilities. If the binary structures, like the Environment Descriptor, are to preserved, then the growth will be hampered by the lack of availability of space in which to implement the new features. By standardizing on the interface to the Environment Descriptor and not the structure of the descriptor itself, then the Environment Descriptor can take any desired form without concern for the impact on other programs. Specifically, ld hl,envadr ; get base address of env ld de,offflag ; get offset to a flag add hl,de ; point to the flag ld a,(hl) ; get the flag value would be severly impacted if the structure of the Environment Descriptor changed, but a call like: ext getflag ; reference library routine to get flag ... call getflag ; return flag in A would not be impacted at all by such a change. The library containing the GETFLAG routine would be impacted, but it is a lot easier to change one module in a library and reassemble 100 programs than it is to track the necessary changes in, edit, and then reassemble 100 programs. With one exception, the routines in the new Z3LIB for ZCPR 3.3 have the same names and interfaces as the routines in the old Z3LIB. Conversion is simple - reassembly is all that is required. Unfortunately, many programmers have not yet learned this lesson. They continue to write code which does not use the libraries. Imagine the work that will be required to go through their programs, modifying the references in order to be compatable with the banked ZCPR3. Imagine them going through the work again for the multitasking ZCPR3, and again and again as ZCPR3 continues to evolve. Thanks to Echelon, ZCPR 3.3 is still compatable at the binary level in terms of the Environment Descriptor. Certain values have been replaced with others, so changes will still be necessary, but many of the key values have stayed in the same places with the same meanings. My original approach was to free up all of the dead space left by the removed values, making more room at the end for growth, but Echelon convinced me that the impact on programs written by those who didn't understand the basic principle of the libraries would be devastating. Thanks to the new design, it only took me 3 hours to convert back with no loss of functionality -- yet another benefit from the new structured design of the system -- but I can guarantee that the future systems will not be converted in this manner. If everyone starts thinking in terms of the libraries, the future growth of the Z System is assured. If people cling to the old ideas of not using the libraries, then it is clear that growth will be curtailed. The Bottom Line I am moving forward with the development of the new ZCPR 3.3 and the new Z System. As you can see, there are many changes in it, and I have barely skimmed the surface. I will move ahead and release it only when I am satisfied that it is usable to others. Documentation must go with the release, so the release will not take place until the documentation is ready. My goal is to meet my needs, as outlined above, and this goal will be met. I thank those of you who have been supportive in the efforts of Echelon and myself, and I sincerely hope that you will share in my enthusiasm for the new ZCPR 3.3 when I release it to you. Rick Conn